#include<bits/stdc++.h>
using namespace std;
typedef double db;
const int MAXN=20;
int n;
db a1[MAXN],matrix[MAXN][MAXN];
void gauss()
{
	for(int i=1;i<=n;++i)
	{
		db t=1.0/matrix[i][i];
		for(int j=i;j<=n+1;++j)matrix[i][j]*=t;
		for(int j=i+1;j<=n;++j)
		{
			t=-matrix[j][i];
			for(int k=i;k<=n+1;++k)matrix[j][k]+=matrix[i][k]*t;
		}
	}
	for(int i=n;i>1;--i)
	{
		for(int j=i-1;j>=1;--j)
		{
			db t=-matrix[j][i];
			for(int k=n+1;k>=i;--k)matrix[j][k]+=matrix[i][k]*t;
		}
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;++i)scanf("%lf",&a1[i]);
	for(int i=1;i<=n;++i)		
		for(int j=1;j<=n;++j)
		{
			scanf("%lf",&matrix[i][j]);
			matrix[i][n+1]+=(a1[j]*a1[j]-matrix[i][j]*matrix[i][j]);
			matrix[i][j]=2.0*(a1[j]-matrix[i][j]);
		}
	gauss();
	for(int i=1;i<=n;++i)
	{
		printf("%.3lf",matrix[i][n+1]);
		if(i!=n)printf(" ");
	}
	return 0;
}
